gesture: strengthen against destroyed windows
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 21 Sep 2015 13:00:28 +0000 (15:00 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 21 Sep 2015 13:53:28 +0000 (15:53 +0200)
Bail out when we receive an event with an already destroyed window,
we'll hopefully get reset/cancelled afterwards on grab broken events.

https://bugzilla.gnome.org/show_bug.cgi?id=755352

gtk/gtkgesture.c

index cb0fbbe80ba9a39bc763b7f21e57cc5aa1923e93..ab4f20b5b8aaa5051739ee4919c1255cc6d53b05 100644 (file)
@@ -400,7 +400,7 @@ _find_widget_window (GtkGesture *gesture,
 
   widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
 
-  while (window)
+  while (window && !gdk_window_is_destroyed (window))
     {
       gdk_window_get_user_data (window, (gpointer*) &window_widget);
 
@@ -474,6 +474,10 @@ _update_widget_coordinates (GtkGesture *gesture,
   gint wx, wy, x, y;
 
   event_widget = gtk_get_event_widget (data->event);
+
+  if (!event_widget)
+    return;
+
   widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
   event_widget_window = gtk_widget_get_window (event_widget);
   _get_event_coordinates (data, &event_x, &event_y);